package com.teotigraphix.caustic.config;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
import com.teotigraphix.caustic.application.ApplicationProvider;
import com.teotigraphix.caustic.controller.ApplicationController;
import com.teotigraphix.caustic.controller.ControllerProvider;
import com.teotigraphix.caustic.controller.IApplicationController;
import com.teotigraphix.caustic.controller.IControllerProvider;
import com.teotigraphix.caustic.model.ApplicationModel;
import com.teotigraphix.caustic.model.IApplicationModel;
import com.teotigraphix.caustic.screen.IScreenManager;
import com.teotigraphix.caustic.screen.ScreenManager;
import com.teotigraphix.caustic.servce.InjectorService;
import com.teotigraphix.caustk.application.ICaustkApplicationProvider;
import com.teotigraphix.caustk.service.IInjectorService;
public abstract class CausticRuntimeModule extends AbstractModule {
@Override
protected void configure() {
bind(ICaustkApplicationProvider.class).to(ApplicationProvider.class).in(Singleton.class);
bind(IApplicationModel.class).to(ApplicationModel.class).in(Singleton.class);
bind(IApplicationController.class).to(ApplicationController.class).in(Singleton.class);
bind(IControllerProvider.class).to(ControllerProvider.class).in(Singleton.class);
bind(IInjectorService.class).to(InjectorService.class).in(Singleton.class);
bind(IScreenManager.class).to(ScreenManager.class).in(Singleton.class);
configurePlatformRequirements();
configureApplicationRequirements();
}
/**
* The platform specific injections for either JavaFX or Android.
*/
protected abstract void configurePlatformRequirements();
/**
* Application injections.
* <p>
* Required;
* <ul>
* <li>ICaustkConfiguration</li>
* <li>ResourceBundle</li>
* </ul>
*/
protected abstract void configureApplicationRequirements();
}